package com.xbongbong.paas.data.service;

import com.alibaba.fastjson.JSONObject;
import com.xbongbong.paas.domain.entity.AttrTrashEntity;
import com.xbongbong.paas.domain.entity.PaasFormDataEntity;
import com.xbongbong.paas.domain.entity.PaasFormRichTextEntity;
import com.xbongbong.paas.pojo.dto.FormDataAddDTO;
import com.xbongbong.paas.pojo.dto.FormDataUpdateDTO;
import com.xbongbong.paas.pojo.dto.FormRichTextBatchDTO;
import com.xbongbong.paas.pojo.dto.ProcessDataAddDTO;
import com.xbongbong.workflow.domain.entity.WorkflowBackupDataEntity;

/**
 * 富文本业务层
 *
 * @author LiZhikang
 * @date 2022/7/28 9:28
 */
public interface RichTextService {
    /**
     * 保存表单富文本
     */
    void saveFormRichText(FormDataAddDTO formDataAddDTO, PaasFormDataEntity paasFormDataEntity, Object richTextData);


    /**
     * 更新表单富文本
     *
     * @param formDataUpdateDTO
     * @param richTextData
     */
    Integer updateFormRichText(FormDataUpdateDTO formDataUpdateDTO, Object richTextData);

    /**
     * 根据dataId获取富文本
     *
     * @param dataId       数据Id
     * @param corpid       公司Id
     * @param formId       表单Id
     * @param businessType 业务类型
     * @param saasMark     Saas标记
     * @param del          删除标记
     * @return
     */
    PaasFormRichTextEntity getByDataId(Long dataId, String corpid, Long formId, Integer businessType, Integer saasMark, Integer del);

    /**
     * 备份富文本
     *
     * @param workflowBackupDataEntity
     * @param businessType
     * @param saasMark
     */
    void backupRichText(WorkflowBackupDataEntity workflowBackupDataEntity, Integer businessType, Integer saasMark);

    /**
     * 在Json数据中拼装富文本
     *
     * @param dataId       数据Id
     * @param corpid       公司Id
     * @param formId       表单Id
     * @param businessType 业务类型
     * @param saasMark     Saas标记
     * @param del          删除标记
     * @param data         Json数据
     */
    void addRichTextByDataId(Long dataId, String corpid, Long formId, Integer businessType, Integer saasMark, Integer del, JSONObject data);

    /**
     * 在Json数据中拼装富文本
     *
     * @param taskId
     * @param corpid
     * @param data
     */
    void addRichTextByTaskId(Long taskId, String corpid, JSONObject data);

    /**
     * 判断表单是否有富文本数据
     *
     * @param corpid 公司Id
     * @param formId 表单Id
     * @return
     */
    boolean hasData(String corpid, Long formId);

    /**
     * 垃圾回收站删除
     *
     * @param corpid
     * @param formId
     * @param saasMark
     * @param businessType
     * @return
     */
    boolean trashDelete(String corpid, Long formId, Integer saasMark, Integer businessType);

    /**
     * 垃圾回收站删除
     *
     * @param attrTrashEntity
     * @return
     */
    void trashDelete(AttrTrashEntity attrTrashEntity);

    /**
     * 表单富文本批量操作(删除、还原)
     *
     *
     * @param batchDTO
     */
    void operateBatch(FormRichTextBatchDTO batchDTO);

}
